// data/models/User.kt（完整版）

package com.example.xxcjgl.data.models

import com.google.gson.annotations.SerializedName

/**
 * 系统用户模型
 */
data class User(
    @SerializedName("user_bh")
    val userId: Int,

    @SerializedName("user_bm")
    val userCode: String,

    @SerializedName("user_xm")
    val userName: String,

    @SerializedName("user_yhcj")
    val userLevel: Int, // 0-应用层，1-管理层

    @SerializedName("user_pw")
    val password: String, // 加密后的密码

    @SerializedName("last_login")
    val lastLogin: String? = null,

    @SerializedName("login_count")
    val loginCount: Int = 0,

    @SerializedName("is_active")
    val isActive: Boolean = true
) {
    /**
     * 判断用户是否是管理员
     */
    val isAdmin: Boolean
        get() = userLevel == 1

    /**
     * 获取用户层级显示文本
     */
    val levelText: String
        get() = if (isAdmin) "管理员" else "普通用户"

    /**
     * 获取简化的用户信息（用于显示）
     */
    fun getDisplayInfo(): String {
        return "$userName ($userCode) - $levelText"
    }

    companion object {
        /**
         * 创建默认管理员用户（用于测试）
         */
        fun createDefaultAdmin(): User {
            return User(
                userId = 1,
                userCode = "0001",
                userName = "管理员",
                userLevel = 1,
                password = "加密密码"
            )
        }
    }
}

/**
 * 用户会话信息
 */
data class UserSession(
    val user: User,
    val token: String,
    val expiresAt: Long,
    val loginTime: Long = System.currentTimeMillis()
) {
    val isExpired: Boolean
        get() = System.currentTimeMillis() > expiresAt

    val remainingTime: Long
        get() = expiresAt - System.currentTimeMillis()
}

/**
 * 用户偏好设置
 */
data class UserPreferences(
    val theme: String = "auto", // auto, light, dark
    val language: String = "zh",
    val autoSave: Boolean = true,
    val encryptionEnabled: Boolean = false,
    val defaultEncryptionKey: String? = null,
    val searchHistory: List<String> = emptyList()
)
